import Vue from 'vue'
import App from './App.vue'
// 全局组件  把三级联动组件作为全局组件 注册一次可全局使用
import TypeNav from '@/components/TypeNav';
// 组件名、哪一个组件
Vue.component(TypeNav.name, TypeNav);
// 注册轮播图为全局组件
import Carsousel from '@/components/Carousel';
Vue.component(Carsousel.name, Carsousel)
// 分页器
import Pagination from '@/components/Pagination';
Vue.component(Pagination.name, Pagination)
// 引入路由
import router from '@/router'
// 引入仓库
import store from '@/store';
// 引入MockServer.js mock数据
import '@/mock/mockServe';
// 引入swiper样式
import 'swiper/css/swiper.css';
// 
import { Button, MessageBox } from 'element-ui';
// 注册方式一 (全局)
Vue.component(Button.name, Button);
// 注册方式二
Vue.prototype.$msgbox = MessageBox;
Vue.prototype.$alert = MessageBox.alert;

Vue.config.productionTip = false

// 引入懒加载插件
import VueLazyload from 'vue-lazyload';
import lanjiazaguodu from '@/assets/1.gif'
Vue.use(VueLazyload, {
  // 懒加载时默认的图片
  loading: lanjiazaguodu
})

// api 请求接口 统一引入
// 组件可以直接用这个
import * as API from '@/api';

// 引入校验插件
import "@/plugins/validate"

new Vue({
  render: h => h(App),

  beforeCreate () {
    // 兄弟通信 全局事件总线配置
    Vue.prototype.$bus = this;
    Vue.prototype.$API = API;
  },
  // 注册路由
  router,
  // 注册仓库  组件实例会多一个属性$store
  store
}).$mount('#app')
